using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;


public class BackpackUIManager : MonoBehaviour
{
    // 引用玩家的背包系统
    public BackpackSystem backpackSystem;

    // 用于创建道具槽的预制体
    public GameObject itemSlotPrefab;

    // 用于布局背包格子的父对象
    public Transform backpackGrid;

    // 用于布局装备栏格子的父对象
    public Transform equippedGrid;

    // 用于布局消耗品栏格子的父对象
    public Transform consumableGrid;

    // 用于显示道具详细信息的文本组件
    public Text itemDetailText;
    //public Text itemDetailText;
    // 存储所有创建的道具槽对象的列表
    private List<GameObject> itemSlots = new List<GameObject>();

    // 初始化背包UI
    void Start()
    {
        // 更新UI显示
        UpdateBackpackUI();
        UpdateEquippedUI();
        UpdateConsumablesUI();
    }

    // 更新背包UI
    public void UpdateBackpackUI()
    {
        // 清空背包格子中的所有子对象
        ClearUI(backpackGrid);

        // 遍历背包中的所有道具
        foreach (Item item in backpackSystem.GetBackpackItems())
        {
            // 实例化一个新的道具槽对象并设置其父对象
            GameObject slot = Instantiate(itemSlotPrefab, backpackGrid);

            // 设置道具槽的图标为道具的图标
            slot.GetComponent<Image>().sprite = item.icon;

            // 添加点击事件监听器，点击时显示道具详细信息
            slot.GetComponent<Button>().onClick.AddListener(() => ShowItemDetails(item));

            // 将创建的道具槽对象添加到列表中
            itemSlots.Add(slot);
        }
    }

    // 更新装备UI
    public void UpdateEquippedUI()
    {
        // 清空装备栏格子中的所有子对象
        ClearUI(equippedGrid);

        // 遍历装备栏中的所有道具
        foreach (Item item in backpackSystem.GetEquippedItems())
        {
            // 实例化一个新的装备槽对象并设置其父对象
            GameObject slot = Instantiate(itemSlotPrefab, equippedGrid);

            // 设置装备槽的图标为道具的图标
            slot.GetComponent<Image>().sprite = item.icon;

            // 添加点击事件监听器，点击时显示道具详细信息
            slot.GetComponent<Button>().onClick.AddListener(() => ShowItemDetails(item));

            // 将创建的装备槽对象添加到列表中
            itemSlots.Add(slot);
        }
    }

    // 更新消耗品UI
    public void UpdateConsumablesUI()
    {
        // 清空消耗品栏格子中的所有子对象
        ClearUI(consumableGrid);

        // 遍历消耗品栏中的所有消耗品
        foreach (ConsumableItem consumable in backpackSystem.GetConsumables())
        {
            // 实例化一个新的消耗品槽对象并设置其父对象
            GameObject slot = Instantiate(itemSlotPrefab, consumableGrid);

            // 设置消耗品槽的图标为消耗品的图标
            slot.GetComponent<Image>().sprite = consumable.icon;

            // 添加点击事件监听器，点击时显示消耗品详细信息
            slot.GetComponent<Button>().onClick.AddListener(() => ShowItemDetails(consumable));

            // 将创建的消耗品槽对象添加到列表中
            itemSlots.Add(slot);
        }
    }

    // 清空指定UI容器中的所有子对象
    private void ClearUI(Transform grid)
    {
        // 遍历所有子对象并销毁
        foreach (Transform child in grid)
        {
            Destroy(child.gameObject);
        }
    }

    // 显示道具详细信息
    private void ShowItemDetails(Item item)
    {
        // 设置详细信息文本为道具的名称和描述
        itemDetailText.text = $"{item.itemName}\n{item.description}";
    }
}
